package com.ruoyi.my.service;

import com.ruoyi.my.domain.MyFile;
import com.ruoyi.my.dto.FileModifyDTO;
import com.ruoyi.my.service.impl.MyFileServiceImpl;
import io.minio.errors.*;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.security.InvalidKeyException;
import java.security.NoSuchAlgorithmException;
import java.util.List;
import java.util.Map;

public interface MyFileService {

    /**
     * 根据文件信息查询文件列表
     * @return 文件列表
     */
    public List<MyFile> selectFileList(MyFile myFile);

    /**
     * 批量上传文件
     * @return 插入结果信息数组
     */
    public List<String> insert(List<MultipartFile> files, MyFile myFile);

    /**
     * 批量删除文件
     * @return 删除结果信息
     */
    public String remove(List<Integer> ids);

    /**
     * 下载文件
     * @return 字节输入流以及文件信息
     */
    public String download(Integer id);

    /**
     * 预览文件
     * @return 预览文件的url，可直接访问
     */
    public String preview(Integer id);

    /**
     * @param file 文件
     * @param fileModifyDTO 文件信息
     * @return 文件是否修改成功、覆盖成功的信息
     */
    String modify(MultipartFile file, FileModifyDTO fileModifyDTO) throws ServerException, InsufficientDataException, ErrorResponseException, IOException, NoSuchAlgorithmException, InvalidKeyException, InvalidResponseException, XmlParserException, InternalException;

    /**
     * 获取文件类型列表
     * @return
     */
    List<MyFileServiceImpl.tempFileType> fetchFileTypes(String menu, String name);

}
